package com.cgnpc.cuddemo.workbench.application.impl;

import cn.com.cgnpc.aep.bizcenter.appcenter.sdk.result.ApiResult;
import com.cgnpc.cuddemo.workbench.application.IBpmCenterApplication;
import com.cgnpc.framework.service.IBpmCenterService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.HashMap;
import java.util.Map;
/******************************
 * 用途说明: 中台流程相关的处理
 * 作者姓名: pxmwrya
 * 创建时间: 2019/6/17_11:18
 ******************************/
@Service
public class BpmCenterApplicationImpl implements IBpmCenterApplication {

    @Autowired
    IBpmCenterService iBpmCenterService;

    /**********************************
     * 用途说明: 获取一个流程的初始节点
     * 参数说明 procId
     * 返回值说明:
     ***********************************/
    @Override
    public ApiResult getStartAct(String procId) throws Exception {
        return iBpmCenterService.getStartAct(procId);
    }

    /**********************************
     * 用途说明: 获取流程实例所在节点的下一节点
     * 参数说明 procId
     * 参数说明 actMetadata
     * 返回值说明:
     ***********************************/
    @Override
    public ApiResult getNextNode(String procId, String actMetadata) throws Exception {
        return iBpmCenterService.getNextNode(procId,actMetadata);
    }


    /**********************************
     * 用途说明: 获取流程当前处理人
     * 参数说明 paramsMap
     * 返回值说明:
     ***********************************/
    @Override
    public ApiResult queryApprovePerson(Map paramsMap) throws Exception {
        return iBpmCenterService.queryApprovePerson(paramsMap);
    }

    /**********************************
     * 用途说明: 获取流程下一节点处理人
     * 参数说明 procId
     * 参数说明 node
     * 返回值说明:
     ***********************************/
    @Override
    public ApiResult getApprovePerson(String procId, String node) throws Exception {
        return iBpmCenterService.getApprovePerson(procId,node);
    }

    /**********************************
     * 用途说明: 获取下一步点处理人
     * 参数说明 paramsMap
     * 返回值说明:
     ***********************************/
    @Override
    public ApiResult getNextApprovePerson(Map paramsMap) throws Exception {
        return iBpmCenterService.getNextApprovePerson(paramsMap);
    }

    /**********************************
     * 用途说明: 获取流程实例所在节点的退回节点
     * 参数说明 procId
     * 参数说明 actMetadata
     * 返回值说明:
     ***********************************/
    @Override
    public ApiResult getBackNode(String procId, String actMetadata) throws Exception {
        return iBpmCenterService.getBackNode(procId,actMetadata);
    }

    /**********************************
     * 用途说明: 发起一个流程  自动给下一步处理人发邮件
     * 参数说明 map
     * 返回值说明:
     ***********************************/
    @Override
    public ApiResult startProcess(Map map) throws Exception {
        return iBpmCenterService.startProcess(map);
    }

    /**********************************
     * 用途说明: 通过流程集全名获取流程集信息 主要是得到当前正在使用的版本以及
     * 参数说明 fullName
     * 返回值说明:
     ***********************************/
    @Override
    public ApiResult getProcSetByFullName(String fullName) throws Exception {
        return iBpmCenterService.getProcSetByFullName(fullName);
    }

    /**********************************
     * 用途说明: 获取待办列表
     * 参数说明 params
     * 返回值说明:
     ***********************************/
    @Override
    public ApiResult getWorkListItems(String params) throws Exception {
        return iBpmCenterService.getWorkListItems(params);
    }

    /**********************************
     * 用途说明: 获取已办列表
     * 参数说明 map
     * 返回值说明:
     ***********************************/
    @Override
    public ApiResult getDoneTaskList(String params) throws Exception {
        return iBpmCenterService.getDoneTaskList(params);
    }

    /**********************************
     * 用途说明: 获取办文跟踪
     * 参数说明 map
     * 返回值说明:
     ***********************************/
    @Override
    public ApiResult getWorkListItemTrace(Map map) throws Exception {
        return iBpmCenterService.getWorkListItemTrace(map);
    }

    /**********************************
     * 用途说明: 提交流程
     * 参数说明 map
     * 返回值说明:
     ***********************************/
    @Override
    public ApiResult submitworklistitem(Map map) throws Exception {
        return iBpmCenterService.getWorkListItemTrace(map);
    }

    /**********************************
     * 用途说明: 获取流程节点信息 (非流程实例)
     * 参数说明 map
     * 返回值说明:
     ***********************************/
    @Override
    public ApiResult getWFConfigActivity(Map map) throws Exception {
        return iBpmCenterService.getWFConfigActivity(map);
    }

    /**********************************
     * 用途说明: 通过流程全名 和 appcode  获取流程信息 (不是流程实例信息)
     * 参数说明 map
     * 返回值说明:
     ***********************************/
    @Override
    public ApiResult getProcessInfo(Map map) throws Exception {
        return iBpmCenterService.getProcessInfo(map);
    }

    /**********************************
     * 用途说明: 获取流程线数据
     * 参数说明 params
     * 返回值说明:
     ***********************************/
    @Override
    public ApiResult getWFConfigLine(String params) throws Exception {
        return iBpmCenterService.getWFConfigLine(params);
    }

    /**********************************
     * 用途说明: 获取流程版本  (非List 应该是只显示在用版本  ***并给出了开始节点)
     * 参数说明 params
     * 返回值说明:
     ***********************************/
    @Override
    public ApiResult getWFConfigProc(String params) throws Exception {
        return iBpmCenterService.getWFConfigProc(params);
    }

    /**********************************
     * 用途说明: 获取流程集信息
     * 参数说明 map
     * 返回值说明:
     ***********************************/
    @Override
    public ApiResult getWFConfigProcSet(Map map) throws Exception {
        return iBpmCenterService.getWFConfigProcSet(map);
    }

    /**********************************
     * 用途说明: 请求调用查询流程实例
     * 参数说明 params
     * 返回值说明:
     ***********************************/
    @Override
    public ApiResult getProcessInfoList(String params) throws Exception {
        return iBpmCenterService.getProcessInfoList(params);
    }

    /**********************************
     * 用途说明: 返回调用查询流程实例
     * 参数说明 params
     * 返回值说明:
     ***********************************/
    @Override
    public ApiResult getBackProcessInfoList(String params) throws Exception {
        return iBpmCenterService.getBackProcessInfoList(params);
    }

    /**********************************
     * 用途说明: 作废流程
     * 参数说明 params
     * 返回值说明:
     ***********************************/
    @Override
    public ApiResult cancelProc(String params) throws Exception {
        return iBpmCenterService.cancelProc(params);
    }

    /**********************************
     * 用途说明: 回调接口
     * 参数说明 params
     * 返回值说明:
     ***********************************/
    @Override
    public ApiResult collBack(String params) throws Exception {
        return iBpmCenterService.collBack(params);
    }

    /**********************************
     * 用途说明: 退回接口
     * 参数说明 map
     * 返回值说明:
     ***********************************/
    @Override
    public ApiResult rollBackAction(Map map) throws Exception {
        return iBpmCenterService.rollBackAction(map);
    }

    /**********************************
     * 用途说明: 撤销接口
     * 参数说明 params
     * 返回值说明:
     ***********************************/
    @Override
    public ApiResult withdraw(String params) throws Exception {
        return iBpmCenterService.withdraw(params);
    }

    /**********************************
     * 用途说明:附件运行状态
     * 参数说明
     * 返回值说明:
     ***********************************/
    @Override
    public ApiResult imsBpmFileStatus() throws Exception {
        return iBpmCenterService.imsBpmFileStatus();
    }

    /**********************************
     * 用途说明:流程中心健康检查
     * 参数说明
     * 返回值说明:
     ***********************************/
    @Override
    public ApiResult healthCheck() throws Exception {
        return iBpmCenterService.healthCheck();
    }

    /**********************************
     * 用途说明: 获得代理列表
     * 参数说明 paramsMap
     * 返回值说明:
     ***********************************/
    @Override
    public ApiResult getDelegateList(Map paramsMap) throws Exception {
        return iBpmCenterService.getDelegateList(paramsMap);
    }

    /**********************************
     * 用途说明: 新增全部代理
     * 参数说明 params
     * 返回值说明:
     ***********************************/
    @Override
    public ApiResult addDelegates(String params) throws Exception {
        return iBpmCenterService.addDelegates(params);
    }

    /**********************************
     * 用途说明: 新增代理
     * 参数说明 params
     * 返回值说明:
     ***********************************/
    @Override
    public ApiResult addDelegate(String params) throws Exception {
        return iBpmCenterService.addDelegate(params);
    }

    /**********************************
     * 用途说明: 待阅（不限流程状态）
     * 参数说明 paramsMap
     * 返回值说明:
     ***********************************/
    @Override
    public ApiResult getCopySendItemsListSecond(Map paramsMap) throws Exception {
        return iBpmCenterService.getCopySendItemsListSecond(paramsMap);
    }

    /**********************************
     * 用途说明: 抄送(这个流程必须结束了)，产生待阅  待完成  //目前接口写的只是一个？
     * 参数说明 paramsMap
     * 返回值说明:
     ***********************************/
    @Override
    public ApiResult copySendWorkListItemSecond(Map paramsMap) throws Exception {
        return iBpmCenterService.copySendWorkListItemSecond(paramsMap);
    }

    /**********************************
     * 用途说明: 抄送功能
     * 参数说明 paramsMap
     * 返回值说明:
     ***********************************/
    @Override
    public ApiResult copySendWorkListItem(Map paramsMap) throws Exception {
        return iBpmCenterService.copySendWorkListItem(paramsMap);
    }

    /**********************************
     * 用途说明: 获取用户代理结果
     * 参数说明 paramsMap
     * 返回值说明:
     ***********************************/
    @Override
    public ApiResult getDelegateListByUser(Map paramsMap) throws Exception {
        return iBpmCenterService.getDelegateListByUser(paramsMap);
    }

    /**********************************
     * 用途说明: 获取待阅(抄送列表)
     * 参数说明 paramsMap
     * 返回值说明:
     ***********************************/
    @Override
    public ApiResult getCopySendItemsList(Map paramsMap) throws Exception {
        return iBpmCenterService.getCopySendItemsList(paramsMap);
    }

    /**********************************
     * 用途说明: 待阅提交
     * 参数说明 paramsMap
     * 返回值说明:
     ***********************************/
    @Override
    public ApiResult copysenditemsubmitSecond(Map paramsMap) throws Exception {
        return iBpmCenterService.copysenditemsubmitSecond(paramsMap);
    }

    /**********************************
     * 用途说明: 删除代理用户设置
     * 参数说明 paramsMap
     * 返回值说明:
     ***********************************/
    @Override
    public ApiResult delDelegateUserSetting(Map paramsMap) throws Exception {
        return iBpmCenterService.delDelegateUserSetting(paramsMap);
    }

    /**********************************
     * 用途说明: 删除代理设置
     * 参数说明 paramsMap
     * 返回值说明:
     ***********************************/
    @Override
    public ApiResult deldelegatesetting(Map paramsMap) throws Exception {
        return iBpmCenterService.deldelegatesetting(paramsMap);
    }

    /**********************************
     * 用途说明: 分页查询我的草稿列表
     * 参数说明 paramsMap
     * 返回值说明:
     ***********************************/
    @Override
    public ApiResult getDraftListByPaging(Map paramsMap) throws Exception {
        return iBpmCenterService.getDraftListByPaging(paramsMap);
    }

    /**********************************
     * 用途说明: 新增我的草稿
     * 参数说明 paramsMap
     * 返回值说明:
     ***********************************/
    @Override
    public ApiResult addDraft(Map paramsMap) throws Exception {
        return iBpmCenterService.addDraft(paramsMap);
    }

    /**********************************
     * 用途说明: 删除我的草稿
     * 参数说明 paramsMap
     * 返回值说明:
     ***********************************/
    @Override
    public ApiResult deleteMyDraft(Map paramsMap) throws Exception {
        return iBpmCenterService.deleteMyDraft(paramsMap);
    }

    /**********************************
     * 用途说明: 更新我的草稿
     * 参数说明 paramsMap
     * 返回值说明:
     ***********************************/
    @Override
    public ApiResult updateDraft(Map paramsMap) throws Exception {
        return iBpmCenterService.updateDraft(paramsMap);
    }

    /**********************************
     * 用途说明: 查询流程节点的基本信息  是为了了解 会签规则  是否重选快速审批人
     * 参数说明 paramsMap
     * 返回值说明:
     ***********************************/
    @Override
    public ApiResult getBpmPscActInfo(Map paramsMap) throws Exception {
        return iBpmCenterService.getBpmPscActInfo(paramsMap);
    }

    /**********************************
     * 用途说明: 获取上一审批信息 通过查询某个流程实例的已办 这里没有分页请注意性能 psc pageSize 不超过100
     * 参数说明 paramsMap
     * 返回值说明:
     ***********************************/
    @Override
    public HashMap getLasApproveInfo(Map paramsMap) throws Exception {
        return iBpmCenterService.getLasApproveInfo(paramsMap);
    }

    /**********************************
     * 用途说明: 获取已阅任务列表
     * 参数说明 paramsMap
     * 返回值说明:
     ***********************************/
    @Override
    public ApiResult getcopysenditemlogs(Map paramsMap) throws Exception {
        return iBpmCenterService.getcopysenditemlogs(paramsMap);
    }
}